<?php

class Admin_CandidatoController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

	public function indexAction()
    {
    	$form = new SON_Forms_Busca();
        $candidato = new Candidato();
        $session = new Zend_Session_Namespace('candidato');
        
        $conditions = array();
        if ($this->_request->isPost()) {
        	$session->post = $this->_request->getPost();
        }
        
        if ($session->post) {
	        $form->populate($session->post);
	        if (isset($session->post['filtro_busca']) && $session->post['filtro_busca']) {
	        	$conditions += array('candidato.nome LIKE ?' => '%' . $session->post['filtro_busca'] . '%');
	        }
	        if (isset($session->post['eleicao_id']) && $session->post['eleicao_id']) {
	        	$conditions += array('candidato.eleicao_id = ?' => $session->post['eleicao_id']);
	        }
	        if (isset($session->post['cargo_id']) && $session->post['cargo_id']) {
	        	$conditions += array('candidato.cargo_id = ?' => $session->post['cargo_id']);
	        }
	        if (isset($session->post['partido_id']) && $session->post['partido_id']) {
	        	$conditions += array('candidato.partido_id = ?' => $session->post['partido_id']);
	        }
	        if (isset($session->post['situacao_id']) && $session->post['situacao_id']) {
	        	$conditions += array('candidato.situacao_id = ?' => $session->post['situacao_id']);
	        }
	        if (isset($session->post['resultado_id']) && $session->post['resultado_id']) {
	        	$conditions += array('candidato.resultado_id = ?' => $session->post['resultado_id']);
	        }
        }
        
        $this->view->messages = $this->_helper->getHelper('FlashMessenger')->getMessages();
        $this->view->form = $form;
        $this->view->candidatos = $candidato->search(
            array(
                'page' => $this->_getParam('page', 1),
                'conditions' => $conditions
            )
        );
    }

    public function addAction()
    {
        $form = new SON_Forms_Candidato();
        
        if ($this->_request->isPost()) {
            $data = $this->_request->getPost();
            if ($form->isValid($data)) {
            	$this->uploadImage($form, $data);
        
                $candidato = new Candidato($data);
                $candidato->save();
                
                $this->_helper->FlashMessenger(
                	array('success' => 'Candidato cadastrado com sucesso')
                );
        
                $this->_redirect('admin/candidato/');
            } else {
    			$form->populate($data);
    			$this->view->error = $form->getMessages();
    		}
        }
        
        $this->view->form = $form;
    }

    public function editAction()
    {
        $candidato = new Candidato();
        $rcandidato = $candidato->getAsArray((int) $this->_getParam('id', 0));
        
        $politico = new Politico();
        $rcandidato['politico_id'] = $politico->getAsArray((int) $rcandidato['politico_id']);
    
        $form = new SON_Forms_Candidato();
        $form->setAsEditForm($rcandidato);
    
        if ($this->_request->isPost()) {
            $data = $this->_request->getPost();
            if ($form->isValid($data)) {
            	$this->uploadImage($form, $data);
            	
            	$candidato = new Candidato($data);
            	$candidato->save();
            	
            	$this->_helper->FlashMessenger(
            		array('success' => 'Candidato alterado com sucesso')
            	);
            	
            	$this->_redirect('admin/candidato/');
            } else {
                $form->populate($data);
                $this->view->error = $form->getMessages();
            }
        }
        
        $this->view->candidato = $rcandidato;
        $this->view->form = $form;
    }
    
    public function deleteAction()
    {
        $candidato = new Candidato();
        if ((int) $this->_getParam('id') > 0) {
            $candidato->delete((int) $this->_getParam('id'));
            
            $this->_helper->FlashMessenger(
            	array('success' => 'Candidato excluído com sucesso')
            );
        }
    
        $this->_helper->viewRenderer->setNoRender();
        $this->_redirect("admin/candidato/");
    }

    public function importAction()
    {
    	set_time_limit(0);
    	ini_set('memory_limit', '-1');
    	
    	$form = new SON_Forms_ImportaCSVCandidato();
    	
    	if ($this->_request->isPost()) {
    		$data = $this->_request->getPost();
    		if ($form->isValid($data)) {
	    		$arquivo = $form->getElement('arquivo');
	    		$arquivo->receive();
	    		
	    		$import = new ImportaCSVCandidato();
	    		$import->importarDados($arquivo->getFileName());
	    		
	    		$this->_helper->FlashMessenger(
	    			array('success' => 'Arquivo importado com sucesso')
	    		);
	    		 
	    		$this->_redirect('admin/candidato/');
    		} else {
                $this->view->error = $form->getMessages();
            }
    	}
    	
    	$this->view->form = $form;
    }
    
    public function importphotoAction()
    {
    	set_time_limit(0);
    	ini_set('memory_limit', '-1');
    	 
    	$form = new SON_Forms_Busca();
    	$candidato = new Candidato();
    	
    	if ($this->_request->isPost()) {
    		$data = $this->_request->getPost();
    		if ($form->isValid($data)) {
    			
    			$conditions = array();
    			if ($data['eleicao_id']) {
    				$conditions += array('candidato.eleicao_id = ?' => $data['eleicao_id']);
    			}
    			if ($data['cargo_id']) {
    				$conditions += array('candidato.cargo_id = ?' => $data['cargo_id']);
    			}
    			if ($data['partido_id']) {
    				$conditions += array('candidato.partido_id = ?' => $data['partido_id']);
    			}
    			 
    			$import = new ImportaCSVCandidato();
    			$import->importarFotos($conditions);
    		
    			$this->_helper->FlashMessenger(
    				array('success' => 'Importação de foto efetuada com sucesso')
    			);
    		
    			$this->_redirect('admin/candidato/importphoto');
    		}
    	}
    	
    	$this->view->messages = $this->_helper->getHelper('FlashMessenger')->getMessages();
    	$this->view->form = $form;
    	$this->view->candidatos = $candidato->search(
    		array(
    			'page' => $this->_getParam('page', 1),
    			'conditions' => array('candidato.foto IS ?' => new Zend_Db_Expr('NULL'))
    		)
    	);
    }
    
    private function uploadImage($form, &$data)
    {
    	if ($form->getElement('foto')->isUploaded()) {
    		$fname = md5(uniqid(rand(), true)) . '.' . pathinfo($form->getElement('foto')->getFileName(), PATHINFO_EXTENSION);
    		 
    		$form->getElement('foto')->addFilter('Rename', array('target' => 'fotos/' . $fname, 'overwrite' => true));
    		$form->getElement('foto')->receive();
    		 
    		if (SON_Helper_Util::resizeImage('fotos/' . $fname, 161, 225) && SON_Helper_Util::resizeImage('fotos/' . $fname, 64, 96, 'fotos/thumb_' . $fname, 75)) {
    			$data['foto'] = $fname;
    		}
    	}
    }

}

